/*
* Copyright (c) 2009, Ander Ruiz & Alexander Benito
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * - Redistributions of source code must retain the above copyright notice,
 *   this list of conditions and the following disclaimer.
 * - Redistributions in binary form must reproduce the above copyright notice,
 *   this list of conditions and the following disclaimer in the documentation
 *   and/or other materials provided with the distribution.
 * - Neither the name of Mauricio Aguilar O. nor the names of its contributors
 *   may be used to endorse or promote products derived from this software
 *   without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 *
 * @author: Ander Ruiz y Alexander Benito
 * email  : anderruiz@yahoo.es
 * Date   : May 31 , 2009
 *
 */
package org.transFX.scene.shape;

import javafx.scene.CustomNode;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.shape.Circle;
import javafx.scene.paint.Color;
import javafx.scene.image.*;
import javafx.scene.paint.Paint;
import org.transFX.scene.paint.GradientTools;
import org.transFX.lang.JFXUtils;
import org.transFX.scene.layout.*;

/**
 * @author Ander
 */

public class RoundIconBackground extends CustomNode {

    public-init var width:Integer;
    public-init var centerNode:Node;

    public-init var ringPaint:Paint = GradientTools.makeLinearGradient(Color.web("#CBCBCB"));
    public-init var borderPaint:Paint = Color.web("#656565");
    public-init var buttonColor:Color = Color.web("#0B5EB1") on replace
    {
        buttonPaint = GradientTools.makeRadialGradient(buttonColor, 0.5, 0, 3.2, 1.2, 1.4);
    };
    public-init var buttonPaint:Paint = GradientTools.makeRadialGradient(buttonColor, 0.5, 0, 3.2, 1.2, 1.4);

    public override function create(): Node {
        return Group {

            cache: true;

            content: [Circle{
                translateX: width/2 + 1;
                translateY: width/2 + 1;
                radius: width/2;
                stroke: borderPaint;
                fill: ringPaint;
                }
                Circle {
                    translateX: width/2 + 1;
                    translateY: width/2 + 1;
                    radius: 0.8 * (width/2);
                    fill: buttonPaint;
                    stroke: borderPaint;
                }
                AlignableCustomNode
                {
                    translateX: 1;
                    translateY: 1;
                    verticalSpace: width;
                    horizontalSpace: width;
                    content: centerNode;
                    verticalAlignment: AlignableCustomNode.CENTER;
                    horizontalAlignment: AlignableCustomNode.CENTER;
                }

                ]
        };
    }
}

function run()
{
        var imageV = ImageView{
            image: Image{
                url: "error2.png";
            }
        }
    var button = RoundIconBackground
    {
        width: 58;
        //centerNode: imageV;
    }
    println(JFXUtils.getNodeWidth(button));
    println(JFXUtils.getNodeWidth(imageV));
    var node = InfoNode {
        translateX: 50;
        translateY: 50;

        image: button;
        shapeSubstract: true;
        shapeSubstractX: 10;
        shapeSubstractY: 10;
    }

    JFXUtils.showRun(node);
}


